package com.yuandian.business.monitor.mapper;

import com.yuandian.api.business_monitor.po.CockpitParams;
import com.yuandian.api.business_monitor.vo.*;
import com.yuandian.po.BaseSearch;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 说明：首页大屏数据驾驶舱mapper
 *
 * @Author yanjun
 * @Date 2020/9/27 8:42
 */
@Mapper
public interface CockpitMapper {

	/**
	 * 查询系统总览
	 *
	 * @param params 首页大屏数据驾驶舱搜索条件
	 * @return 首页大屏-系统总览vo对象
	 */
//    @SqlAlias("大屏页-查询系统总览")
	List<SystemOverview> systemOverview(@Param("params") CockpitParams params);

	/**
	 * 查询失败量趋势 当天
	 *
	 * @param params 首页大屏数据驾驶舱搜索条件
	 * @param params 天数
	 * @param
	 * @return 首页大屏-失败量趋势vo对象
	 */
	List<FailTrend> failTrend(@Param("params") CockpitParams params, @Param("days") Integer days);

	/**
	 * 查询系统业务访问量TopN
	 *
	 * @param params 首页大屏数据驾驶舱搜索条件
	 * @return 首页大屏-系统业务访问量TopN vo对象
	 */
	List<BusinessVisitsTopNVo> businessVisitsTopN(@Param("params") CockpitParams params);

	/**
	 * 查询系统业务健康度TopN
	 *
	 * @param params 首页大屏数据驾驶舱搜索条件
	 * @return 首页大屏-系统业务健康度TopN vo对象
	 */
//    @SqlAlias("大屏页-查询系统业务健康度TopN")
	List<BusinessHealthyTopNVo> businessHealthyTopN(@Param("params") CockpitParams params);

	/**
	 * 查询系统请求量趋势
	 *
	 * @param params        首页大屏数据驾驶舱搜索条件
	 * @param tableNameList
	 * @return 首页大屏-系统请求量趋势vo对象
	 */
	List<RequestTrendVo> requestTrend(@Param("params") CockpitParams params, @Param("days") Integer days);

    /**
     * 查询系统网端告警TopN
     * @param params 首页大屏数据驾驶舱搜索条件
     * @return 首页大屏-系统网端告警TopN vo对象
     */
    List<SegmentAlarmTopNVo> segmentAlarmTopN(@Param("params") CockpitParams params);

    /**
     * 查询系统告警趋势
     * @param params 首页大屏数据驾驶舱搜索条件
     * @param indicators
     * @param days 天数
     * @return 首页大屏-系统告警趋势vo对象
     */
    List<SystemAlarmTrendVo> systemAlarmTrend(@Param("params") CockpitParams params, @Param("indicators") List<Integer> indicators, @Param("days") Integer days);
//    /**
//     * 查询高级告警信息列表
//     * @param params 首页大屏数据驾驶舱搜索条件
//     * @return 首页大屏-高级告警信息vo对象集合
//     */
//    @SqlAlias("大屏页-查询高级告警信息列表")
//    List<AdvancedAlarmInfoVo> advancedAlarmInfoList(@Param("params") CockpitParams params);
//
//    @SqlAlias("大屏页-告警类型(告警指标id)")


	/**
	 * 查询系统请求量历史峰值
	 * @param params	参数对象
	 * @param scale		刻度值
	 * @param scaleType	刻度类型
	 * @return	结果集
	 */
	RequestPeak queryRequestPeak(@Param("params") CockpitParams params,
								 @Param("scale") int scale,
								 @Param("scaleType") String scaleType,
								 @Param("baseSearch") BaseSearch baseSearch,
								 @Param("peakType") String peakType);

	/**
	 * 流量趋势查询
	 * @param params 首页大屏数据驾驶舱搜索条件
	 * @param days 前几天天数
	 * @return
	 */
	List<FlowTrend> queryFlowTrend(@Param("params") CockpitParams params, @Param("days") int days);
	/**
	 * 业务办理时长趋势
	 * @param params 首页大屏数据驾驶舱搜索条件
	 * @param days 前几天天数
	 * @return
	 */
	List<BusHandleTrend> queryBusinessHandleTrend(@Param("params") CockpitParams params, @Param("days") int days);

	/**
	 * 网端请求topn
	 * @param params
	 * @return
	 */
	List<SegmentReqTopNVo> querySegmentReqTop(@Param("params") CockpitParams params);

	/**
	 * 首页大屏-网端流量top10占比
	 *
	 * @return 首页大屏-网端流量top10占比
	 */
    List<SegmentFlowTopVo> querySegmentFlowTop(@Param("params") CockpitParams params);
}
